<?php require_once(BASEPATH.'application/controllers/validaciones.php');
//egresos
class cruce extends validaciones {

	function cruce(){
		parent::Controller();
		$this->load->library('rapyd');
	}
    function index() {
        
		redirect('finanzas/cruce/filteredgrid');
	}
	function filteredgrid() {
		
        $this->rapyd->load('datagrid2','datafilter');

		$atts = array(
			'width'      => '800',
			'height'     => '600',
			'scrollbars' => 'yes',
			'status'     => 'yes',
			'resizable'  => 'yes',
			'screenx'    => '0',
			'screeny'    => '0'
		);

		$modbus=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
			'proveed' =>'C&oacute;digo Proveedor',
			'nombre'=>'Nombre',
			'rif'=>'RIF'),
			'filtro'  =>array('proveed'=>'C&oacute;digo Proveedor','nombre'=>'Nombre'),
			'retornar'=>array('proveed'=>'proveed'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->modbus($modbus);
        
        $this->rapyd->uri->keep_persistence();

		$filter = new DataFilter('B&uacute;squeda de Liquidaci&oacute;n de Gastos');
        $select=array('a.transac','a.comp','a.seriep','a.numero','a.seriei','a.numeroi','a.moneda','a.nombre','a.fecha','a.rif');
       
		$filter->db->select($select);
		$filter->db->from("cruce AS a");
        $filter->db->join("itcruce AS b","a.transac=b.transac");
        $filter->db->groupby("a.transac");

		$filter->fechad = new dateonlyField('Desde', 'fechad','d/m/Y');
		$filter->fechah = new dateonlyField('Hasta', 'fechah','d/m/Y');
		$filter->fechad->clause  =$filter->fechah->clause='where';
		$filter->fechad->db_name =$filter->fechah->db_name='a.fecha';
		$filter->fechad->insertValue = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-30,   date("Y")));
		$filter->fechah->insertValue = date('Y-m-d'); 
		$filter->fechah->size=$filter->fechad->size=10;
		$filter->fechad->operator='>='; 
		$filter->fechah->operator='<=';

		$filter->numeroi = new inputField('Comprobante', 'a.numeroi');
		$filter->numeroi->size=20;
        
        $filter->factura = new inputField('Factura', 'b.numerod');
		$filter->factura->size=20;

		$filter->rifci = new inputField('RUC','a.rif');
		$filter->rifci->size=20;
		
		$filter->nombre = new inputField('Proveedor','a.nombre');
		$filter->nombre->size=20;
		
		$filter->buttons('reset','search');
		$filter->build();

		$grid = new DataGrid2();
		$grid->order_by('a.transac','DESC');
		$grid->per_page = 15;

        $uri_2  = anchor_popup('formatos/ver/LIQUI/<#transac#>',img(array('src'=>'images/pdf_logo.gif','border'=>'0','alt'=>'Ver Html','height'=>'15','title'=>'Ver Html')),$atts);
		$uri_2 .= anchor_popup("formatos/verhtml/LIQUI/<#transac#>",img(array('src'=>'images/html_icon.gif','border'=>'0','alt'=>'Ver Pdf','height'=>'15','title'=>'Ver Pdf')),$atts);
					
		$uri = anchor('finanzas/cruce/dataedit/show/<#transac#>','<#seriep#>-<#numero#>');
        
        $grid->column('Acci&oacute;n',$uri_2,"align='center'");
        
        //$grid->column('Serie','seriep');
        $grid->column_orderby('Comprobante','<#comp#><#seriei#>-<#numeroi#>','numeroi');
        $grid->column('N&uacute;mero',$uri);
        $grid->column('Moneda' ,'moneda','align=\'center\'');
		$grid->column_orderby('Fecha'   ,'<dbdate_to_human><#fecha#></dbdate_to_human>','fecha','align=\'center\'');
		$grid->column('RUC','rif');
		$grid->column('Nombre'  ,'nombre');

		$grid->add("finanzas/cruce/dataedit/create","Nueva Liquidaci&oacute;n");
		$grid->build('datagridST');
        
        $style ='
		<style type="text/css">
		.fakeContainer { /* The parent container */
		    margin: 5px;
		    padding: 0px;
		    border: none;
		    width: 1200px; /* Required to set */
		    height: 500px; /* Required to set */
		    overflow: hidden; /* Required to set */
		}
		</style>	
		';

		$data['content'] = $grid->output;
        $data['style']   = $style;
		$data['filtro']  = $filter->output;
		$data['tabla']  = "";
		
		$data['head']    = $this->rapyd->get_head();
		$data['title'] = heading('Liquidaci&oacute;n de Gastos');
		$this->load->view('view_ventanas', $data);
	}

	function dataedit(){
		$this->rapyd->load('dataobject','datadetails');
        
        $modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_<#i#>',
				'descrip'=>'desca_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		
       $btn=$this->datasis->p_modbus($modbus,'<#i#>');
       // 
       //$this->db->query("DROP TABLE IF EXISTS liqui");
       //$this->db->query("CREATE TABLE IF NOT EXISTS liqui SELECT CONCAT(IF(a.tipo_doc='AN','G',a.tipo_doc),a.seriep,'-',a.factura)comp,
       // b.cuenta,c.descrip ncuenta,a.proveed,a.nombre,IF(a.tipo_doc='AN','G',a.tipo_doc)tipo_doc,a.seriep,a.factura,
       // IF(a.moneda='02',monto,ROUND(monto/a.cambio,2)) montod,
       // IF(a.moneda='01',monto,ROUND(monto*a.cambio,2)) montos,a.cambio,a.fecha,
       // a.abonos,a.moneda
       // FROM sprm as a 
       // LEFT JOIN gser as b on a.transac=b.transac
       // LEFT JOIN cpla as c on b.cuenta=c.cuenta
       // WHERE a.tipo_doc NOT IN ('AB','D','L') AND a.monto > a.abonos
       // UNION
       // SELECT CONCAT(IF(a.tipo_doc='AN','G',a.tipo_doc),a.seriep,'-',a.factura)comp,
		//b.cuenta,c.descrip ncuenta,a.proveed,a.nombre,IF(a.tipo_doc='AN','G',a.tipo_doc)tipo_doc,a.seriep,a.factura,
       // IF(a.moneda='02',monto,ROUND(monto/a.cambio,2)) montod,
       // IF(a.moneda='01',monto,ROUND(monto*a.cambio,2)) montos,a.cambio,a.fecha,
       // a.abonos,a.moneda
       // FROM sprm as a 
       // LEFT JOIN gser as b on a.transac=b.transac
       // LEFT JOIN cpla as c on b.cuenta=c.cuenta
       // WHERE a.tipo_doc='L'");
       
       $modbus=array(
			'tabla'   =>'liqui',
			'columnas'=>array(
				'proveed'  =>'Proveedor',
				'nombre'   =>'Nombre',
				'comp'    => 'Comprobante',
                'fecha'    => 'Fecha',
                'montod'   => 'Monto $',
                'montos'   => 'Monto S/.',
                'cambio'   => 'Cambio',
				'abonos'   => 'Abonos',
				'moneda'   => 'Moneda'
				),
			'filtro'  =>array('nombre'  =>'Nombre','comp'=>'Documento','factura'=>'Numero'),
			'retornar'=>array(
				'proveed' =>'proveed_<#i#>',
				'tipo_doc'=>'tipod_<#i#>',
				'seriep'  =>'seried_<#i#>',
				'factura' =>'numerod_<#i#>',
				'montod'   =>'importe_<#i#>',
                'montos'   =>'importemn_<#i#>',
                'cuenta'   =>'cuenta_<#i#>',
                'ncuenta'  =>'desca_<#i#>',
                'moneda'  =>'monedaori_<#i#>'
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		
       $btn1=$this->datasis->p_modbus($modbus,'<#i#>');
       
       $btn1=$this->datasis->p_modbus($modbus,'<#i#>');
        	
		$modbus_sprv=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
                'proveed'=>'proveed',
                'rif'=>'rif',
                'nombre'=>'nombre'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->p_modbus($modbus_sprv);
        
		$do = new DataObject('cruce');
		$do->rel_one_to_many('itcruce', 'itcruce', 'transac');
				
		$edit = new DataDetails('cruce', $do);
		$edit->back_url = site_url('finanzas/cruce/filteredgrid');
		$edit->set_rel_title('itcruce','Cuenta <#o#>');
		//$edit->script($script);
		
		$edit->pre_process('insert' ,'_pre_insert');
		$edit->pre_process('update' ,'_pre_update');
        $edit->pre_process('delete' ,'_pre_del');
        
		$edit->post_process('insert','_post_insert');
		$edit->post_process('update','_post_insert');
		$edit->post_process('delete','_post_delete');
		
		$edit->transac = new hiddenField(" ", 'transac');
                        
        $edit->fecha = new DateonlyField("Fecha", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
		$edit->fecha->size = 10;
        $edit->fecha->rule= "required";
        $edit->fecha->rule= "callback_cambio";

		$edit->vence = new DateonlyField("Vencimiento", "vence","Y-m-d");
		$edit->vence->insertValue = date("Y-m-d");
		$edit->vence->size = 10;
		
		$edit->cuentai = new inputField('Cuenta', 'cuentai');
		$edit->cuentai->size     = 12;
		$edit->cuentai->rule     = 'required';
		$edit->cuentai->readonly  =true;
		$edit->cuentai->db_name='cuenta';
		$edit->cuentai->when=array('show');
        
		$edit->comp = new dropdownField("Comprobante", "comp");
		//$edit->comp->option("","");
		$edit->comp->option("L","L");
		$edit->comp->rule= "required";
        $edit->comp->style='width:45px;';
		
		$comp=$edit->getval('comp');
		
		$edit->seriei = new dropdownField("Comprobante", "seriei");
		$edit->seriei->option("","Seleccione un comprobante" );
		$edit->seriei->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriel WHERE codigo='012'ORDER BY codigo ");
		$edit->seriei->rule= "required";
		$edit->seriei->onchange = "numcruce();";
        $edit->seriei->style='width:200px;';
        
        $ano=date("Y");
        $mes=date("m");
        
        $edit->numeroi = new inputField("N&uacute;mero", "numeroi");
		$edit->numeroi->size = 11;
        $edit->numeroi->css_class ='inputnum';
        $edit->numeroi->mode="autohide";
        $edit->numeroi->rule= "required";
		$edit->numeroi->maxlength=11;
		$edit->numeroi->rule= "callback_chexiste";
		//$edit->numeroi->insertValue = date("$ano$mes$num");
		//$edit->numeroi->when=array('show');

		$edit->seriep = new inputField("N&uacute;mero", "seriep");
		$edit->seriep->size = 4;
		$edit->seriep->rule= "required";
        $edit->seriep->css_class ='inputnum';
        $edit->seriep->maxlength=3;
		
		$edit->numero = new inputField("N&uacute;mero", "numero");
		$edit->numero->size = 12;
		$edit->numero->maxlength=11;
        
        $edit->orden = new inputField("N&uacute;mero de Orden", "orden");
		$edit->orden->size = 20;
						
		$edit->proveed = new inputField("Proveedor", "proveed");
		$edit->proveed->size = 7;
		$edit->proveed->maxlength=5;
        $edit->proveed->append($boton);
        $edit->proveed->readonly  = true;
        $edit->proveed->rule= "required";
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->readonly  = true;
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->readonly  = true;
        
        $edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =40;
        $edit->condi1->rule= "required";
		//$edit->condi1->maxlength=50;
        
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","Administraci&oacute;n");
		$edit->ccosto->option('0002',"Operaci&oacute;n");
		$edit->ccosto->option('0003','Importaci&oacute;n'); 
		$edit->ccosto->style='width:200px;';   
       
		$edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:200px;';
		//$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo DESC");
		$edit->moneda->rule = 'required';
			
		$fechac=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha=CURDATE()");
		$edit->cambio = new inputField("Cambio", 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12;
		$edit->cambio->insertValue=$fechac;
		$edit->cambio->onclick = "cfecha();";
		$edit->cambio->rule = 'required';
		
        $edit->ivat = new inputField('Impuesto', 'iva');
		$edit->ivat->css_class ='inputnum';
		$edit->ivat->onkeyup  ='vpr()';
		$edit->ivat->db_name='totiva';
		$edit->ivat->size      = 10;

		$edit->totals = new inputField('Sub-Total', 'totals');
		$edit->totals->css_class ='inputnum';
		$edit->totals->db_name='totpre';
		$edit->totals->size      = 10;

		$edit->totalg = new inputField('Monto Total', 'totalg');
		$edit->totalg->css_class ='inputnum';
		$edit->totalg->db_name='totbruto';
		$edit->totalg->size      = 10;
		$edit->totalg->onkeyup  ='porcreten()';
		
		$edit->totneto = new inputField('Neto por Pagar', 'totneto');
		$edit->totneto->css_class ='inputnum';
		$edit->totneto->readonly  =true;
		$edit->totneto->db_name='totneto';
		$edit->totneto->size      = 10;
		
		$edit->mexento = new inputField('Total Inafecto', 'mexento');
		$edit->mexento->css_class ='inputnum';
		$edit->mexento->db_name='exento';
		$edit->mexento->readonly  =true;
		$edit->mexento->size      = 10;
		//$edit->mexento->when=array('show');
		//$edit->mexento->onkeyup  ='totiva()';
		
		$edit->credito = new inputField('Total en Creditos', 'credito');
		$edit->credito->css_class ='inputnum';
		$edit->credito->size      = 10;
		$edit->credito->readonly  =true;
		//$edit->credito->onkeyup  ='vpr()';
           
        $edit->porcrete = new inputField('Porcentaje', 'porcrete');
		$edit->porcrete->css_class ='inputnum';
		$edit->porcrete->size      = 3;
        $edit->porcrete->onkeyup  ='vpr()';
        
        $edit->fvrete = new DateonlyField("Fecha de Vencimiento", "fvrete","Y-m-d");
		$edit->fvrete->insertValue = date("Y-m-d");
		$edit->fvrete->size = 12;
                
        $edit->rete = new inputField('Monto de Detracci&oacute;n %', 'rete');
		$edit->rete->css_class ='inputnum';
		$edit->rete->insertValue = 0;
		$edit->rete->size      = 7;
               
        $edit->codrete = new inputField('Codigo de tasa', 'codrete');
		$edit->codrete->size      = 15;
        $edit->codrete->css_class ='inputnum';
        $edit->codrete->maxlength=2;

		//**************************
		//  Campos para el detalle
		//**************************
		$edit->cuenta = new inputField('Cuenta <#o#>', 'cuenta_<#i#>');
		$edit->cuenta->size     = 10;
		$edit->cuenta->maxlength= 10;
		$edit->cuenta->readonly  = true;
		$edit->cuenta->db_name  = 'cuenta';
		$edit->cuenta->rel_id   = 'itcruce';
		$edit->cuenta->rule     = 'required';
		$edit->cuenta->append($btn);

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->db_name='desca';
		$edit->desca->rel_id='itcruce';
		$edit->desca->rule = 'required|strtoupper';
		$edit->desca->size    = 20;
		
		$edit->ruc = new inputField('RUC <#o#>', 'proveed_<#i#>');
		$edit->ruc->db_name='proveed';
		$edit->ruc->rel_id='itcruce';
		$edit->ruc->rule = 'strtoupper';
		$edit->ruc->size    = 7;
		$edit->ruc->maxlength= 11;
        $edit->ruc->readonly  = true;
		$edit->ruc->onkeypress  ='importe(<#i#>)';
		$edit->ruc->append($btn1);
				
		$edit->tipod = new inputField('Tipo <#o#>', 'tipod_<#i#>');
		$edit->tipod->db_name  = 'tipod';
		$edit->tipod->rel_id   = 'itcruce';
		$edit->tipod->size     = 1;
		$edit->tipod->maxlength= 1;
        $edit->tipod->readonly  = true;
		//$edit->tipod->rule     = 'required|positive';
		$edit->tipod->autocomplete=false;
		
		$edit->seried = new inputField('Serie <#o#>', 'seried_<#i#>');
		$edit->seried->db_name  = 'seried';
		$edit->seried->rel_id   = 'itcruce';
		$edit->seried->size     = 3;
		$edit->seried->maxlength= 3;
        $edit->seried->readonly  = true;
		//$edit->seried->rule     = 'required|positive';
		$edit->seried->autocomplete=false;
		
		$edit->numerod = new inputField('Numero <#o#>', 'numerod_<#i#>');
		$edit->numerod->db_name  = 'numerod';
		$edit->numerod->rel_id   = 'itcruce';
		$edit->numerod->size     = 11;
		$edit->numerod->maxlength= 11;
        $edit->numerod->readonly  = true;
		//$edit->numerod->rule     = 'required|positive';
		$edit->numerod->autocomplete=false;
		
		$edit->tipo = new dropdownField('Tipo <#o#>', 'tipo_<#i#>');
		$edit->tipo->db_name  = 'tipo';
		$edit->tipo->option("","");
		$edit->tipo->option("D","D");
		$edit->tipo->option("C","C");
		$edit->tipo->rel_id   = 'itcruce';
		$edit->tipo->rule     = 'required|positive';
		$edit->tipo->autocomplete=false;
		$edit->tipo->onchange ='importe(<#i#>)';
		$edit->tipo->style    = 'width:100%';
        
        $edit->monedaori = new inputField('Moneda<#o#>', 'monedaori_<#i#>');
		$edit->monedaori->db_name  = 'monedaori';
		$edit->monedaori->rel_id   = 'itcruce';
		$edit->monedaori->size     = 2;
		$edit->monedaori->maxlength= 2;
        $edit->monedaori->rule     = 'required|positive';
		$edit->monedaori->autocomplete=false;

		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=12;
		//$edit->importe->readonly=true;
		$edit->importe->css_class='inputnum';
		$edit->importe->rel_id   ='itcruce';
		$edit->importe->rule     = 'required|positive';
		$edit->importe->onkeyup  ='importe(<#i#>)';
        
        $edit->importemn = new inputField('Importe <#o#>', 'importemn_<#i#>');
		$edit->importemn->db_name='importemn';
		$edit->importemn->size=12;
		$edit->importemn->rule     = 'required|positive';
		$edit->importemn->css_class='inputnum';
		$edit->importemn->rel_id   ='itcruce';
		
		$edit->creditos = new inputField('creditos <#o#>', 'creditos_<#i#>');
		$edit->creditos->db_name='creditos';
		$edit->creditos->size=12;
		$edit->creditos->css_class='inputnum';
		$edit->creditos->rel_id   ='itcruce';
		$edit->creditos->readonly=true;
		$edit->creditos->onkeyup  ='importe(<#i#>)';
        
        $edit->create = new hiddenField("create <#o#> ", 'create_<#i#>');
        $edit->create->db_name  = 'create';
		$edit->create->rel_id   = 'itcruce';
        
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));

        if($edit->_status=='show'){
		   $accion="javascript:window.location='".site_url("finanzas/cruce/dataedit/create")."'";  
           $edit->button_status('btn_finanzas','Nueva Liquidaci&oacute;n',$accion,'TR','show');	
		}
		        
          
        $edit->buttons('delete','modify', 'save', 'undo', 'add_rel','back');    	
        $edit->build();
        		
        $conten['form']  =&  $edit;
		$data['content'] = $this->load->view('view_cruce', $conten,true);
		$data['title']   = heading('Liquidaci&oacute;n de Gastos  '.$edit->seriep->value.'-'.$edit->numero->value);

		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
	}
    function _pre_insert($do){
                
        $fecha  =$do->get('fecha');       
        $numero =$do->get('numero');
        $numeroi=$do->get('numeroi');
        $seriep =$do->get('seriep');
        $seriei =$do->get('seriei');
        $proveed=$do->get('proveed');
        $nombre=$do->get('nombre');
        
        $transac=$this->datasis->fprox_numero('ntransa');
        
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
        $numero =str_pad($numero, 11, "0", STR_PAD_LEFT); 
        $seriep =str_pad($seriep, 3, "0", STR_PAD_LEFT); 
        $usuario =$this->session->userdata['usuario'];
                
        $do->set('transac',$transac);
        $do->set('cambio',$cambio);
        $do->set('numero',$numero);
        $do->set('seriep',$seriep);
                
		$cana=$do->count_rel('itcruce');
        
		for($i=0;$i<$cana;$i++){
			
			$cod_prv    = $do->get_rel('itcruce','proveed',$i);
            $cuenta     = $do->get_rel('itcruce','cuenta',$i);
            $moneda     = $do->get_rel('itcruce','monedaori',$i);
            
            $do->set_rel('itcruce','create' ,'N' ,$i);
                        
            $tipoc      ='L';
            
            IF(empty($cod_prv)){
                
                
                 switch ($cuenta){
                
                    case '4202010200':
                        $tipo_doc='AN';//anticipo me
                        $tipoc='G';
                        $moneda='02';
                        break;
                    
                    case '4202010100':
                        $tipo_doc='AN';//anticipo mn
                        $tipoc='G';
                        $moneda='01';	
                        break;
                    
                    case '4201020200':
                        $tipo_doc='P';//cxp me
                        $tipoc='P';	
                        $moneda='02';
                        break;
                    
                    case '4201020100':
                        $tipo_doc='P';//cxp mn
                        $tipoc='P';	
                        $moneda='01';
                        break;
                   
                   case '4609090200':
                        $tipo_doc='P';//cxp me
                        $tipoc='P';	
                        $moneda='02';
                        break;
                    
                    case '4609090100':
                        $tipo_doc='P';//cxp mn
                        $tipoc='P';	
                        $moneda='01';
                        break;
            
                }   
                
                $importe    = $do->get_rel('itcruce','importe',$i);
                $importemn  = $do->get_rel('itcruce','importemn',$i);
                $monedaori  = $do->get_rel('itcruce','monedaori',$i);
            
                If($monedaori=='02'){$monto=$importe;}ELSE{$monto=$importemn;}
                                
                $numerodocu=$tipoc.str_pad($numero, 9, "0", STR_PAD_LEFT);
                
                $do->set_rel('itcruce','proveed' ,$proveed ,$i);
                $do->set_rel('itcruce','tipod'   ,$tipoc ,$i);
                
                if(($tipoc=='P')||($tipoc=='G')){
                    $this->db->query("INSERT INTO `sprm` (`cod_prv`, `nombre`, `tipo_doc`, `numero`, `fecha`, `subtotal`,`monto`,`impuesto`, `vence`,`transac`, `estampa`, `hora`, `usuario`,`factura`, `proveed`, `cajachica`,`totalg`,`seriep`,`seriei`,`moneda`,`cambio`,`numeroi`) 
                    VALUES ('$proveed', '$nombre', '$tipo_doc', '$numerodocu', '$fecha','$monto','$monto','0','$fecha','$transac',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$usuario','$numero','$proveed','N','$monto','$seriep','$seriei','$moneda','$cambio','$numeroi');");
                    
                    $do->set_rel('itcruce','seried'  ,$seriep ,$i);
                    $do->set_rel('itcruce','numerod' ,$numero ,$i);
                    $do->set_rel('itcruce','create' ,'S' ,$i);
                }else{
                    
                    $do->set_rel('itcruce','seried'  ,$seriei ,$i);
                    $do->set_rel('itcruce','numerod' ,$numeroi ,$i);
                    
                }
    
                $do->set_rel('itcruce','monedaori' ,$moneda ,$i);
            
            }
            
            $cod_prv    = $do->get_rel('itcruce','proveed',$i);
            $rif=$this->datasis->dameval("SELECT rif FROM sprv WHERE proveed='$cod_prv'");
            
            $do->set_rel('itcruce','ruc'     ,$rif  ,$i);			
			$do->set_rel('itcruce','fecha'   ,$fecha    ,$i);
            $do->set_rel('itcruce','transac' ,$transac ,$i);

		}
        
        logusu('cruce',"LIQ. DE GASTO PROVEEDOR: $nombre NUMERO:  $numero CREADO");
        
		return true;
	}
    function _post_insert($do){
		
        $numero=$do->get('numero');
        $numeroi=$do->get('numeroi');
        $seriei=$do->get('seriei');
        $seriep=$do->get('seriep');
        $nombre=$do->get('nombre');
        $transac=$do->get('transac');
        $cana=$do->count_rel('itcruce');
                
        $mSQL_1=$this->db->query("SELECT monto,cod_prv,numero,proveed,factura,serief FROM relacion WHERE itppro='$transac' and tipo='CR'");
             
        foreach($mSQL_1->result() as $items ){
			
            $this->db->query("UPDATE sprm SET abonos=abonos-$items->monto WHERE cod_prv='$items->cod_prv' AND proveed='$items->proveed' AND numero='$items->factura' AND seriep='$items->serief'");
      
		}
        
        $this->db->query("DELETE FROM relacion WHERE itppro='$transac' and tipo='CR'");
        
		for($i=0;$i<$cana;$i++){
			
           $tipod      = $do->get_rel('itcruce','tipod',$i);
           $create     = $do->get_rel('itcruce','create',$i);
           
           $proveed    = $do->get_rel('itcruce','proveed',$i);
           $importe    = $do->get_rel('itcruce','importe',$i);
           $importemn  = $do->get_rel('itcruce','importemn',$i);
           $tipo       = $do->get_rel('itcruce','tipo',$i);
           $numerod    = $do->get_rel('itcruce','numerod',$i);
           $seried     = $do->get_rel('itcruce','seried',$i);
           $monedaori  = $do->get_rel('itcruce','monedaori',$i);
		   
           IF(($create!='S') && ($tipod!='L')){
                        
                If($monedaori=='02'){$monto=$importe;}ELSE{$monto=$importemn;}   
                
                $this->db->query("INSERT INTO relacion (numero,serie,factura,serief,proveed,cod_prv,monto,itppro,tipo,tipod,numerod)
                VALUES('$numeroi','$seriei','$numerod','$seried','$proveed','$proveed','$monto','$transac','CR','L','$numeroi');");
               
                $abonos=$this->datasis->dameval("SELECT SUM(monto) FROM relacion WHERE proveed='$proveed' AND cod_prv='$proveed' AND factura='$numerod'");
                $this->db->query("UPDATE sprm SET abonos='$abonos' WHERE proveed='$proveed' AND cod_prv='$proveed' AND factura='$numerod'");

            
            }
            
		}

	}
    function _pre_update($do){
                
        $fecha  =$do->get('fecha');       
        $numero =$do->get('numero');
        $numeroi=$do->get('numeroi');
        $seriep =$do->get('seriep');
        $seriei =$do->get('seriei');
        $proveed=$do->get('proveed');
        $nombre=$do->get('nombre');
        $transac=$do->get('transac');
        
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
        $numero =str_pad($numero, 11, "0", STR_PAD_LEFT); 
        $seriep =str_pad($seriep, 3, "0", STR_PAD_LEFT); 
        $usuario =$this->session->userdata['usuario'];
        
        $this->db->query("DELETE FROM sprm WHERE transac='$transac' and seriei='$seriei' and numeroi='$numeroi'");
                
        $do->set('cambio',$cambio);
        $do->set('numero',$numero);
        $do->set('seriep',$seriep);
                
		$cana=$do->count_rel('itcruce');
        $tipoc='L';
		for($i=0;$i<$cana;$i++){
			
			$cod_prv    = $do->get_rel('itcruce','proveed',$i);
            $cuenta     = $do->get_rel('itcruce','cuenta',$i);
            $moneda     = $do->get_rel('itcruce','monedaori',$i);
            $create     = $do->get_rel('itcruce','create',$i);
            $tipod      = $do->get_rel('itcruce','tipod',$i);
                                   
            IF(($create=='S')&&($tipod!='L')){
                
                
                 switch ($cuenta){
                
                    case '4202010200':
                        $tipo_doc='AN';//anticipo me
                        $tipoc='G';
                        $moneda='02';
                        break;
                    
                    case '4202010100':
                        $tipo_doc='AN';//anticipo mn
                        $tipoc='G';
                        $moneda='01';	
                        break;
                    
                    case '4201020200':
                        $tipo_doc='P';//cxp me
                        $tipoc='P';	
                        $moneda='02';
                        break;
                    
                    case '4201020100':
                        $tipo_doc='P';//cxp mn
                        $tipoc='P';	
                        $moneda='01';
                        break;
            
                }   
                
                $importe    = $do->get_rel('itcruce','importe',$i);
                $importemn  = $do->get_rel('itcruce','importemn',$i);
                $monedaori  = $do->get_rel('itcruce','monedaori',$i);
            
                If($monedaori=='02'){$monto=$importe;}ELSE{$monto=$importemn;}
                                
                $numerodocu=$tipoc.str_pad($numero, 9, "0", STR_PAD_LEFT);
                
                $do->set_rel('itcruce','proveed' ,$proveed ,$i);
                $do->set_rel('itcruce','tipod'   ,$tipoc ,$i);
                
                $this->db->query("INSERT INTO `sprm` (`cod_prv`, `nombre`, `tipo_doc`, `numero`, `fecha`, `subtotal`,`monto`,`impuesto`, `vence`,`transac`, `estampa`, `hora`, `usuario`,`factura`, `proveed`, `cajachica`,`totalg`,`seriep`,`seriei`,`moneda`,`cambio`,`numeroi`) 
                VALUES ('$proveed', '$nombre', '$tipo_doc', '$numerodocu', '$fecha','$monto','$monto','0','$fecha','$transac',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$usuario','$numero','$proveed','N','$monto','$seriep','$seriei','$moneda','$cambio','$numeroi');");
                
                $do->set_rel('itcruce','seried'  ,$seriep ,$i);
                $do->set_rel('itcruce','numerod' ,$numero ,$i);
                $do->set_rel('itcruce','monedaori' ,$moneda ,$i);
            
            }else{
                
                IF(($create=='NULL')||(empty($create))){
                    
                 IF(empty($cod_prv)){
                         
                    $tipoc='L';
                    $seriey=$seriei;
                    $numeroy=$numeroi;
                    
                    
                    switch ($cuenta){
                
                    case '4202010200':
                        $tipo_doc='AN';//anticipo me
                        $tipoc='G';
                        $moneda='02';
                        $seriey=$seriep;
                        $numeroy=$numero;
                        break;
                    
                    case '4202010100':
                        $tipo_doc='AN';//anticipo mn
                        $tipoc='G';
                        $moneda='01';	
                        $seriey=$seriep;
                        $numeroy=$numero;
                        break;
                    
                    case '4201020200':
                        $tipo_doc='P';//cxp me
                        $tipoc='P';	
                        $moneda='02';
                        $seriey=$seriep;
                        $numeroy=$numero;
                        break;
                    
                    case '4201020100':
                        $tipo_doc='P';//cxp mn
                        $tipoc='P';	
                        $moneda='01';
                        $seriey=$seriep;
                        $numeroy=$numero;
                        break;
            
                    } 
                    
                    $do->set_rel('itcruce','create' ,'S' ,$i);
                    $do->set_rel('itcruce','tipod'   ,$tipoc ,$i);
                    $do->set_rel('itcruce','seried'  ,$seriey ,$i);
                    $do->set_rel('itcruce','numerod' ,$numeroy ,$i);
                    $do->set_rel('itcruce','proveed' ,$proveed ,$i);
                    
                    }
                    
                }else{
                
                    $do->set_rel('itcruce','create' ,'N' ,$i);    
                
                }
                
            
            }
            
            $cod_prv    = $do->get_rel('itcruce','proveed',$i);
            $rif=$this->datasis->dameval("SELECT rif FROM sprv WHERE proveed='$cod_prv'");
            $do->set_rel('itcruce','ruc'     ,$rif  ,$i);
            
			$do->set_rel('itcruce','fecha'   ,$fecha    ,$i);
            $do->set_rel('itcruce','transac' ,$transac ,$i);

		}
        
        logusu('cruce',"LIQ. DE GASTO PROVEEDOR: $nombre NUMERO:  $numero MODIFICADO");
        
		return true;
	}
    function chexiste(){
 
        $numero=$this->input->post('numeroi');
        
        $numero =str_pad($numero, 11, "0", STR_PAD_LEFT); 
        
		$chek=$this->datasis->dameval("SELECT COUNT(*) FROM cruce WHERE numeroi='$numero'");
        
		if ($chek > 0){
			$this->validation->set_message('chexiste',"Liquidaci&oacute;n de Gastos numero $numero ya se encuentra registrada en el sistema");
			return FALSE;
		}else {
  		return TRUE;
		}
	}
    function _pre_del($do){
		
		$transac   =$do->get('transac');
        $seriei    =$do->get('seriei');
        $numeroi   =$do->get('numeroi');
        
        
        $mSQL_1=$this->db->query("SELECT monto,cod_prv,numero,proveed,factura,serief FROM relacion WHERE itppro='$transac' AND tipo='CR'");
             
        foreach($mSQL_1->result() as $items ){
			
            $this->db->query("UPDATE sprm SET abonos=abonos-$items->monto WHERE cod_prv='$items->cod_prv' AND proveed='$items->proveed' AND numero='$items->factura' AND seriep='$items->serief'");
      
		}
        
        $this->db->query("DELETE FROM relacion WHERE itppro='$transac'");
        $this->db->query("DELETE FROM sprm WHERE transac='$transac' and seriei='$seriei' and numeroi='$numeroi'");
            
	}
	function _post_delete($do){
        
        $numero=$do->get('numero');
        $nombre=$do->get('nombre');
                
		logusu('cruce',"LIQ. DE GASTO PROVEEDOR: $nombre NUMERO:  $numero ELIMINADO");
	}

}
?>
